
//table缓存
import {isNullOrUndefined, strIsEmpty} from "./core";

/**
 * 缓存 table 列宽变更后的宽度
 * 注： column中必须指定 prop 属性，同一个table中不可重名，以该属性存储宽度
 *      虚拟属性以  vue前缀命名，使用陀峰命名
 */
export const tableColumnWidthCacheMixin = {
    data() {
        return {
            //版本号，不同时将会清空原先缓存的列宽信息
            // 不使用，直接强刷重置缓存
            // sksTableVersion: 1,
            //列表名称，不同列表根据该属性进行判断缓存哪个表的列宽信息
            sksTableName: '存储名称',
        }
    },
    computed:{

    },
    created() {

    },
    mounted() {

    },
    methods: {
        removeTableWidthCache(){
            try{
                localStorage.removeItem("sksTable-"+this.sksTableName)
            }catch (e) { console.error(e) }
        },
        loadTableWidthCache(){
            let cache={}
            try{
                let tmp=localStorage.getItem("sksTable-"+this.sksTableName);
                if(!strIsEmpty(tmp)) {
                    cache=JSON.parse(tmp,null)
                }
            }catch (e) { console.error(e) }
            return cache
        },
        saveTableWidthCache({tableWidthCache}={}){
            try{
                if (isNullOrUndefined(tableWidthCache)) {
                    localStorage.setItem("sksTable-"+this.sksTableName,"")
                    return
                }
                localStorage.setItem("sksTable-"+this.sksTableName,JSON.stringify(tableWidthCache,null))
            }catch (e) { console.error(e) }
        },
        /**
         *
         * @param prop          属性名
         * @param defWidth      默认宽度，可以为 undefined
         * @return {*}
         */
        getTableColumnWidth(prop,defWidth){
            let tableWidthCache = this.loadTableWidthCache()
            // console.log("tableWidthCache",tableWidthCache)
            let tmp
            if(isNullOrUndefined(tableWidthCache[prop])){
                tmp=defWidth
            }else{
                tmp=tableWidthCache[prop]
            }
            // console.log(prop+"="+tmp)
            return tmp
        },
        handleDragendTableColumnWidth(newWidth, oldWidth, column, event){
            console.log("column",column)
            if (isNullOrUndefined(column.property)) {
                return;
            }
            let tableWidthCache = this.loadTableWidthCache()
            console.log("tableWidthCache",tableWidthCache)
            tableWidthCache[column.property]=newWidth
            this.saveTableWidthCache({tableWidthCache: tableWidthCache})
            // tableWidthCache.
            // localStorage.setItem("sksTable-"_this.sksTableName,JSON.stringify(tmp))
            //把对应每列的数组宽度存到cookie里
            // this.setCookie('applyTableColWidths',JSON.stringify(applyTableColWidths),30)
        },
    }
}
